home *** CD-ROM | disk | FTP | other *** search
/ Graphics Plus / Graphics Plus.iso / general / raytrace / rayshade / graphtal.lzh / Graphtal.Amiga / Ray.C < prev    next >
C/C++ Source or Header  |  1992-11-17  |  1KB  |  47 lines

  1. /*
  2.  * Ray.C
  3.  *
  4.  * Copyright (C) 1992, Christoph Streit (streit@iam.unibe.ch)
  5.  *                     University of Berne, Switzerland
  6.  * All rights reserved.
  7.  *
  8.  * This software may be freely copied, modified, and redistributed
  9.  * provided that this copyright notice is preserved on all copies.
  10.  *
  11.  * You may not distribute this software, in whole or in part, as part of
  12.  * any commercial product without the express consent of the authors.
  13.  *
  14.  * There is no warranty or other guarantee of fitness of this software
  15.  * for any purpose.  It is provided solely "as is".
  16.  *
  17.  */
  18.  
  19. #include "Ray.h"
  20. #include "transform.h"
  21.  
  22. //___________________________________________________________ Ray
  23.  
  24. Ray::Ray(const Vector& origin, const Vector& direction)
  25. : orig(origin), dir(direction)
  26. {}
  27.  
  28. real Ray::transform(const TransMatrix& tmat)
  29. {
  30.   orig = orig*tmat;
  31.  
  32.   /*
  33.    * apply the transformation to the direction 
  34.    * (translations has no effect)
  35.    */
  36.   dir = vectorTransform(dir, tmat);
  37.  
  38.   /*
  39.    * compute the that the ray is stretched due to the transformation
  40.    */
  41.   real d = dir.length();
  42.   dir.normalize();
  43.  
  44.   return d;
  45. }
  46.  
  47.